iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
Modern Web

網頁技術學習心得系列 第 4

Git 基本操作三(branch、merge、conflict)

  • 分享至 

  • xImage
  •  

分支就像是一個平行時空,從你建立的時間點平行出去,可以在那個分支,做你想做的修改,然後再合併回 master(主分支)。

Branch 分支

  • 建立一個新的 branch 叫做 week1:
    git branch week1[branch 名稱]

  • 切換 branch
    git branch checkout week1[branch 名稱]

  • 查看目前在哪個 branch,例如:
    git branch -v

  master 61fb6ac forth commit
* week1  61fb6ac forth commit
(END)

* 刪除 branch

git branch -d week1[branch 名稱]

Merge 合併

在 master 分支,把另一個分支合併進來
git merge test[分支名稱]


Conflict 衝突

想像一下,分別有A檔案與B檔案,我們建立一個 new-feature 分支,在兩人操作不同分支的情況下,分兩種狀況:

  1. 同事甲改A檔案,同事乙改B檔案,兩人改完後 merge,天下太平!
  2. 同事甲改A、B檔案,同事乙改B檔案,兩人改完之後 merge,天下大亂!

在狀況2中,Git 的邏輯要怎麼解決呢?
按照時間嗎?先 Merge 的先贏?
也不行!

解決方法: 手動解決!

例如:衝突發生,使用 merge 的時候 :

➜  git git:(master) git merge new-feature
Auto-merging code.js
CONFLICT (content): Merge conflict in code.js
Automatic merge failed; fix conflicts and then commit the result.

檔案會出現 :

<<<<<<< HEAD
@@@@@@@@@@@@@      //master branch
=======
!new feature       //another branch(new-feature)
>>>>>>> new-feature

這時就可以直接在這個檔案修改成你要的最終版本,

resolve conflict
@@@@@@@@@@@@@
!new feature

然後改完之後存檔,直接 commit :

commit -am "resolve confilcts"

就解決啦!


上一篇
Git 基本操作二(log、diff、checkout、.gitignore)
下一篇
Git 基本操作四(GitHub )
系列文
網頁技術學習心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言